<template>
  <div class="mapDiv" v-loading="loading">
    <!--地图-->
    <IndexMap v-if="completeRefreshData==true"
              @getMap="getMap" :xjAllDataArray="xjAllDataList" :jgAllDataArray="jgAllDataList"
    ></IndexMap>
    <!--工具条控件-->
    <ControlToolBar v-if="completeRefreshData==true"
                    :map="map" :pageType="pageType"
                    @getClickLonLat="getClickLonLat"
    ></ControlToolBar>
    <!--超图图层显示-->
    <SuperMapLayer v-if="completeMapBool==true"
                   :map="map" :layerDataTypeList="layerDataTypeList"
                   :resetClearAllBool="resetClearAllBool"
                   :clickLonLat="clickLonLat" :olLayerShowHideName="olLayerShowHideName"
                   @getCompleteLayerReturn="getCompleteLayerReturn"
    ></SuperMapLayer>
  </div>
</template>

<script setup>
//地图
import IndexMap from '@/map/thematicMap/synthesis/regionalSynthesis/indexMap.vue';
import ControlToolBar from '@/map/components/controlToolBar/map.vue';
import SuperMapLayer from '@/map/components/superMapLayer/index.vue';
import {getDataByEngineeringType} from "@/api/thematicMap/probeClass/seismicReinforcement.js";

const { proxy } = getCurrentInstance();
const props = defineProps(['formSqlFilter1','formSqlFilter2','formSqlFilter3','formSqlFilter4',
  'formSqlFilter5','formSqlFilter6','formSqlFilter7','formSqlFilter8','formSqlFilter9','formSqlFilter10','queryParams','queryFlag']);
const emits = defineEmits(['getLayerReturnType','returnQueryFlag']);
const loading = ref(false);
const pageType = ref("区域综合图页面");
const xjAllDataList = ref([]);//新建工程数据列表
const jgAllDataList = ref([]);//加固工程数据列表
const olLayerShowHideName = ref("");//设置非超图图层图例显示

const data = reactive({
  //图层数据类别code和url列表
  layerDataTypeList:[
    {
      //活断层避让分布图（100米）
      level2DataType:"activeFaultAvoidance",//数据类别二级code
      level3DataType:"activeFaultAvoidance100",//数据类别三级code
      versionCode:null,//查询临时图层过滤条件
      show:false,//是否显示
      isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
      tifFileName:null,//tif文件名称
    },
    {
      //活断层避让分布图（200米）
      level2DataType:"activeFaultAvoidance",//数据类别二级code
      level3DataType:"activeFaultAvoidance200",//数据类别三级code
      versionCode:null,//查询临时图层过滤条件
      show:false,//是否显示
      isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
      tifFileName:null,//tif文件名称
    },
    {
      //房屋加固优先级点
      level2DataType:"fwjgyxjsj",//数据类别二级code
      level3DataType:"fwjgyxjd",//数据类别三级code
      versionCode:null,//查询临时图层过滤条件
      show:false,//是否显示
      isYw:false,//是否为业务系统数据，true业务系统，false基础数据系统
      tifFileName:null,//tif文件名称
    },
    {
      //重点隐患房屋住宅面
      level2DataType:"zdyhsj",//数据类别二级code
      level3DataType:"zdyhfwm",//数据类别三级code
      versionCode:null,//查询临时图层过滤条件
      show:false,//是否显示
      isYw:false,//是否为业务系统数据，true业务系统，false基础数据系统
      tifFileName:null,//tif文件名称
    },
    {
      //重点隐患市政桥梁线
      level2DataType:"zdyhsj",//数据类别二级code
      level3DataType:"zdyhszx",//数据类别三级code
      versionCode:null,//查询临时图层过滤条件
      show:false,//是否显示
      isYw:false,//是否为业务系统数据，true业务系统，false基础数据系统
      tifFileName:null,//tif文件名称
    },
    {
      //单指标风险区划--抗震能力-确定评估风险区划
      level2DataType:"singleRiskZonationConfirm",//数据类别二级code
      level3DataType:"singleRiskZonationConfirmKznl",//数据类别三级code
      versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
      show:false,//是否显示
      isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
      tifFileName:null,//tif文件名称
      legendLabel:null,//图例文字
    },
    {
      //单指标风险区划--人员伤亡-确定评估风险区划
      level2DataType:"singleRiskZonationConfirm",//数据类别二级code
      level3DataType:"singleRiskZonationConfirmRk",//数据类别三级code
      versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
      show:false,//是否显示
      isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
      tifFileName:null,//tif文件名称
      legendLabel:null,//图例文字
    },
    {
      //单指标风险区划--经济损失-确定评估风险区划
      level2DataType:"singleRiskZonationConfirm",//数据类别二级code
      level3DataType:"singleRiskZonationConfirmJj",//数据类别三级code
      versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
      show:false,//是否显示
      isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
      tifFileName:null,//tif文件名称
      legendLabel:null,//图例文字
    },
    // {
    //   //单指标风险区划--抗震能力-确定评估风险区划1
    //   level2DataType:"singleRiskZonationConfirmKznl",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmKznl1",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--抗震能力-确定评估风险区划2
    //   level2DataType:"singleRiskZonationConfirmKznl",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmKznl2",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--抗震能力-确定评估风险区划3
    //   level2DataType:"singleRiskZonationConfirmKznl",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmKznl3",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--抗震能力-确定评估风险区划4
    //   level2DataType:"singleRiskZonationConfirmKznl",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmKznl4",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--抗震能力-确定评估风险区划5
    //   level2DataType:"singleRiskZonationConfirmKznl",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmKznl5",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--人员伤亡-确定评估风险区划1
    //   level2DataType:"singleRiskZonationConfirmRk",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmRk1",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--人员伤亡-确定评估风险区划2
    //   level2DataType:"singleRiskZonationConfirmRk",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmRk2",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--人员伤亡-确定评估风险区划3
    //   level2DataType:"singleRiskZonationConfirmRk",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmRk3",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--人员伤亡-确定评估风险区划4
    //   level2DataType:"singleRiskZonationConfirmRk",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmRk4",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--人员伤亡-确定评估风险区划5
    //   level2DataType:"singleRiskZonationConfirmRk",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmRk5",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--人员伤亡-确定评估风险区划6--新疆、青海和西藏地区确定评估风险区划1
    //   level2DataType:"singleRiskZonationConfirmRk",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmRk6",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--人员伤亡-确定评估风险区划7--新疆、青海和西藏地区确定评估风险区划2
    //   level2DataType:"singleRiskZonationConfirmRk",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmRk7",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--人员伤亡-确定评估风险区划8--新疆、青海和西藏地区确定评估风险区划3
    //   level2DataType:"singleRiskZonationConfirmRk",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmRk8",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--人员伤亡-确定评估风险区划9--新疆、青海和西藏地区确定评估风险区划4
    //   level2DataType:"singleRiskZonationConfirmRk",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmRk9",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--人员伤亡-确定评估风险区划10--新疆、青海和西藏地区确定评估风险区划5
    //   level2DataType:"singleRiskZonationConfirmRk",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmRk10",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--经济损失-确定评估风险区划1
    //   level2DataType:"singleRiskZonationConfirmJj",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmJj1",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--经济损失-确定评估风险区划2
    //   level2DataType:"singleRiskZonationConfirmJj",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmJj2",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--经济损失-确定评估风险区划3
    //   level2DataType:"singleRiskZonationConfirmJj",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmJj3",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--经济损失-确定评估风险区划4
    //   level2DataType:"singleRiskZonationConfirmJj",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmJj4",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--经济损失-确定评估风险区划5
    //   level2DataType:"singleRiskZonationConfirmJj",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmJj5",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--经济损失-确定评估风险区划6--新疆、青海和西藏地区确定评估风险区划1
    //   level2DataType:"singleRiskZonationConfirmJj",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmJj6",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--经济损失-确定评估风险区划7--新疆、青海和西藏地区确定评估风险区划2
    //   level2DataType:"singleRiskZonationConfirmJj",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmJj7",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--经济损失-确定评估风险区划8--新疆、青海和西藏地区确定评估风险区划3
    //   level2DataType:"singleRiskZonationConfirmJj",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmJj8",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--经济损失-确定评估风险区划9--新疆、青海和西藏地区确定评估风险区划4
    //   level2DataType:"singleRiskZonationConfirmJj",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmJj9",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
    // {
    //   //单指标风险区划--经济损失-确定评估风险区划10--新疆、青海和西藏地区确定评估风险区划5
    //   level2DataType:"singleRiskZonationConfirmJj",//数据类别二级code
    //   level3DataType:"singleRiskZonationConfirmJj10",//数据类别三级code
    //   versionCode:null,//版本号："全部"则展示整个图层，null无版本号不展示
    //   show:false,//是否显示
    //   isYw:true,//是否为业务系统数据，true业务系统，false基础数据系统
    //   tifFileName:null,//tif文件名称
    //   legendLabel:null,//图例文字
    // },
  ],
})
const { layerDataTypeList } = toRefs(data)

/*地图传参start*/
const completeRefreshData = ref(false);//防止刷新后地图不显示
const completeMapBool = ref(false);//是否完成加载地图
//地图对象
const map = ref(null);
const getMap = (obj)=>{
  map.value = obj;
  completeMapBool.value = true;
}
const resetClearAllBool = ref(false);//是否清空全部超图图层
//点击地图经纬度
const clickLonLat = ref([]);
//传递点击地图经纬度
const getClickLonLat = (lonlat) =>{
  clickLonLat.value = lonlat;
}
//完成加载|移除图层返回结果
const getCompleteLayerReturn = (obj)=>{
  emits('getLayerReturnType',obj);
}
/*地图传参end*/

//根据类型显示超图图层
function showLayerByDataType(type,region,show){
  if(type){
    let sql = "";
    if(region!=""){
      let province = "";
      let city = "";
      let county = "";
      let arr = region.split("-");
      if(arr.length>0){
        province = arr[0];
        if(arr.length>1){
          city = arr[1];
          if(arr.length>2){
            county = arr[2];
          }
        }
      }
      if(province){
        sql += "province='"+province+"'";
      }
      if(city){
        sql += " and city='"+city+"'";
      }
      if(county){
        sql += " and area='"+county+"'";
      }
    }
    let sqlFilter = "";
    if(sql){
      sqlFilter = sql;
    }else{
      sqlFilter = "全部";
    }
    if(show){
      //移除图层数据
      let bool = removeLayerVersion(type);
      setTimeout(function(){
        //设置图层数据版本
        setLayerVersion(type,sqlFilter);
      },200);
    }else{
      //移除图层数据
      removeLayerVersion(type);
    }
  }
}

//设置图层数据
function setLayerVersion(type,sqlFilter){
  let list = layerDataTypeList.value;
  for(let i=0;i<list.length;i++){
    if(list[i].level3DataType==type){//全部
      list[i].versionCode = sqlFilter;
      list[i].show = true;
      break;
    }
  }
  console.log(list);
  layerDataTypeList.value = list;
}

//移除图层数据
function removeLayerVersion(type){
  let bool = false;//是否移除
  let list = layerDataTypeList.value;
  for(let i=0;i<list.length;i++){
    if(list[i].level3DataType==type){
      if(list[i].show){
        bool = true;
      }
      list[i].show = false;
      break;
    }
  }
  console.log(list);
  layerDataTypeList.value = list;
  return bool;
}

/*//根据类型显示超图图层
function showLayerByDataTypeNew(dataType,form){
  let type = form.assessType;
  // let faeId = form.faeId;//确定评估风险区划主表的id
  let range = form.range;//四个临界值设置v1-v4;新疆、青海和西藏地区四个临界值设置xqxV1-xqxV4
  let region = form.region;//查询行政区划区域：省-市-县
  if(dataType && type && range){
    let legendLabelArray = [];
    let sqlFilterArray = [];
    let sql = "";//查询行政区划区域
    if(region!=""){
      let province = "";
      let city = "";
      let county = "";
      let arr = region.split("-");
      if(arr.length>0){
        province = arr[0];
        if(arr.length>1){
          city = arr[1];
          if(arr.length>2){
            county = arr[2];
          }
        }
      }
      if(province){
        sql += " and province='"+province+"'";
      }
      if(city){
        sql += " and city='"+city+"'";
      }
      if(county){
        sql += " and county='"+county+"'";
      }
    }
    for(let j=4;j>=0;j--) {//5个取值区间图层
      let legendLabel = "";
      let sqlFilter = "1=1";
      // sqlFilter += "fae_id='"+faeId+"'";
      sqlFilter += sql;//查询行政区划区域
      if(type=="personCasualtiesEd" || type=="economicLossesEd") {//人员伤亡、经济损失
        sqlFilter += " and borderland_flag='0'";//是否为新疆、青海和西藏地区 0-否 1-是
      }
      if(j==0){
        sqlFilter += " and calculated_value<=" + range.v1;
        legendLabel = "<=" + range.v1;
        if(type=="seismicEd" || type=="economicLossesEd"){//抗震能力、经济损失
          //百分比
          legendLabel = "<=" + (range.v1 / 100);
        }
        legendLabel = "Ⅴ级";
      }else if(j==1){
        sqlFilter += " and calculated_value>" + range.v1 + " and calculated_value<=" + range.v2;
        legendLabel = "(" + range.v1 + "," + range.v2 + "]";
        if(type=="seismicEd" || type=="economicLossesEd"){//抗震能力、经济损失
          //百分比
          legendLabel = "(" + (range.v1 / 100) + "," + (range.v2 / 100) + "]";
        }
        legendLabel = "Ⅳ级";
      }else if(j==2){
        sqlFilter += " and calculated_value>" + range.v2 + " and calculated_value<=" + range.v3;
        legendLabel = "(" + range.v2 + "," + range.v3 + "]";
        if(type=="seismicEd" || type=="economicLossesEd"){//抗震能力、经济损失
          //百分比
          legendLabel = "(" + (range.v2 / 100) + "," + (range.v3 / 100) + "]";
        }
        legendLabel = "Ⅲ级";
      }else if(j==3){
        sqlFilter += " and calculated_value>" + range.v3 + " and calculated_value<=" + range.v4;
        legendLabel = "(" + range.v3 + "," + range.v4 + "]";
        if(type=="seismicEd" || type=="economicLossesEd"){//抗震能力、经济损失
          //百分比
          legendLabel = "(" + (range.v3 / 100) + "," + (range.v4 / 100) + "]";
        }
        legendLabel = "Ⅱ级";
      }else if(j==4){
        sqlFilter += " and calculated_value>" + range.v4;
        legendLabel = ">" + range.v4;
        if(type=="seismicEd" || type=="economicLossesEd"){//抗震能力、经济损失
          //百分比
          legendLabel = ">" + (range.v4 / 100);
        }
        legendLabel = "Ⅰ级";
      }

      if(sqlFilter){
        //
      }else{
        sqlFilter = "全部";
      }
      sqlFilterArray.push(sqlFilter);
      legendLabelArray.push(legendLabel);
    }
    //新疆、青海和西藏地区5个取值区间图层
    for(let j=9;j>=5;j--) {
      let legendLabel = "";
      let sqlFilter = "1=1";
      // sqlFilter += "fae_id='"+faeId+"'";
      sqlFilter += sql;//查询行政区划区域
      if (type == "seismicEd") {//抗震能力没有新疆、青海和西藏地区取值区间
        break;
      }else{
        sqlFilter += " and borderland_flag='1'";//是否为新疆、青海和西藏地区 0-否 1-是
        if(j==5){
          sqlFilter += " and calculated_value<=" + range.xqxV1;
          legendLabel = "<=" + range.xqxV1;
          if(type=="seismicEd" || type=="economicLossesEd"){//抗震能力、经济损失
            //百分比
            legendLabel = "<=" + (range.xqxV1 / 100);
          }
          legendLabel = "Ⅴ级";
        }else if(j==6){
          sqlFilter += " and calculated_value>" + range.xqxV1 + " and calculated_value<=" + range.xqxV2;
          legendLabel = "(" + range.xqxV1 + "," + range.xqxV2 + "]";
          if(type=="seismicEd" || type=="economicLossesEd"){//抗震能力、经济损失
            //百分比
            legendLabel = "(" + (range.xqxV1 / 100) + "," + (range.xqxV2 / 100) + "]";
          }
          legendLabel = "Ⅳ级";
        }else if(j==7){
          sqlFilter += " and calculated_value>" + range.xqxV2 + " and calculated_value<=" + range.xqxV3;
          legendLabel = "(" + range.xqxV2 + "," + range.xqxV3 + "]";
          if(type=="seismicEd" || type=="economicLossesEd"){//抗震能力、经济损失
            //百分比
            legendLabel = "(" + (range.xqxV2 / 100) + "," + (range.xqxV3 / 100) + "]";
          }
          legendLabel = "Ⅲ级";
        }else if(j==8){
          sqlFilter += " and calculated_value>" + range.xqxV3 + " and calculated_value<=" + range.xqxV4;
          legendLabel = "(" + range.xqxV3 + "," + range.xqxV4 + "]";
          if(type=="seismicEd" || type=="economicLossesEd"){//抗震能力、经济损失
            //百分比
            legendLabel = "(" + (range.xqxV3 / 100) + "," + (range.xqxV4 / 100) + "]";
          }
          legendLabel = "Ⅱ级";
        }else if(j==9){
          sqlFilter += " and calculated_value>" + range.xqxV4;
          legendLabel = ">" + range.xqxV4;
          if(type=="seismicEd" || type=="economicLossesEd"){//抗震能力、经济损失
            //百分比
            legendLabel = ">" + (range.xqxV4 / 100);
          }
          legendLabel = "Ⅰ级";
        }
      }

      if(sqlFilter){
        //
      }else{
        sqlFilter = "全部";
      }
      sqlFilterArray.push(sqlFilter);
      legendLabelArray.push(legendLabel);
    }
    console.log("sqlFilterArray");
    console.log(sqlFilterArray);
    console.log(legendLabelArray);
    //设置图层数据版本
    setLayerVersionNew(form,dataType,sqlFilterArray,legendLabelArray);
  }
}*/

//设置图层数据
function setLayerVersionNew(form,dataType,sqlFilterArray,legendLabelArray){
  resetClearAllBool.value = false;
  let list = layerDataTypeList.value;
  /*for(let i=0;i<list.length;i++){
    for(let j=0;j<10;j++){//5个取值区间图层;新疆、青海和西藏地区5个取值区间图层
      if(j>=5){//新疆、青海和西藏地区5个取值区间图层
        if(form.assessType=="seismicEd"){//抗震能力没有新疆、青海和西藏地区取值区间
          break;
        }
      }
      let layerType = dataType + (j+1);
      if(form.assessType=="seismicEd"){
        layerType = dataType + "Kznl" + (j+1);
      }else if(form.assessType=="personCasualtiesEd"){
        layerType = dataType + "Rk" + (j+1);
      }else if(form.assessType=="economicLossesEd"){
        layerType = dataType + "Jj" + (j+1);
      }
      if(list[i].level3DataType==layerType){
        list[i].versionCode = sqlFilterArray[j];
        list[i].legendLabel = legendLabelArray[j];//图例文字
        list[i].show = true;
        break;
      }
    }
  }*/
  let region = form.region;//查询行政区划区域：省-市-县
  let sql = "";//查询行政区划区域
  if (region != "") {
    let province = "";
    let city = "";
    let county = "";
    let arr = region.split("-");
    if (arr.length > 0) {
      province = arr[0];
      if (arr.length > 1) {
        city = arr[1];
        if (arr.length > 2) {
          county = arr[2];
        }
      }
    }
    if (province) {
      sql += " and province='" + province + "'";
    }
    if (city) {
      sql += " and city='" + city + "'";
    }
    if (county) {
      sql += " and county='" + county + "'";
    }
  }
  //单值专题图，按qh_level区划等级分为1-5级
  for(let i=0;i<list.length;i++){
    let layerType = dataType;
    let estimateObj = "0";
    if(form.assessType=="seismicEd"){
      layerType = dataType + "Kznl";
      estimateObj = "0";
    }else if(form.assessType=="personCasualtiesEd"){
      layerType = dataType + "Rk";
      estimateObj = "1";
    }else if(form.assessType=="economicLossesEd"){
      layerType = dataType + "Jj";
      estimateObj = "2";
    }
    if(list[i].level3DataType==layerType){
      let sqlFilter = "estimate_obj='" + estimateObj + "'";
      sqlFilter += sql;//查询行政区划区域
      list[i].versionCode = sqlFilter;
      list[i].legendLabel = null;//图例文字
      list[i].show = true;
      break;
    }
  }
  layerDataTypeList.value = list;
}

/*//移除图层数据
function removeLayerVersionNew(level2DataType){
  let bool = false;
  let list = layerDataTypeList.value;
  for(let i=0;i<list.length;i++){
    if(list[i].level2DataType==level2DataType){
      list[i].show = false;
      bool = true;
    }
  }
  console.log(list);
  layerDataTypeList.value = list;
  return bool;
}*/

//移除图层数据
function removeLayerVersionNew(level3DataType){
  let list = layerDataTypeList.value;
  for(let i=0;i<list.length;i++){
    if(list[i].level3DataType==level3DataType){
      list[i].show = false;
    }
  }
  console.log(list);
  layerDataTypeList.value = list;
}

//根据类型显示抗震加固工程数据图层
function showKzjgLayerByDataType(dataType,region,bool){
  if(dataType=="新建工程"){
    if(bool==false){
      xjAllDataList.value = [];
    }else{
      // 不分页获取案例集数据下的新建工程数据列表
      getDataByEngineeringXj(region);
    }
  }else if(dataType=="加固工程"){
    if(bool==false){
      jgAllDataList.value = [];
    }else{
      // 不分页获取案例集数据下的加固工程数据列表
      getDataByEngineeringJg(region);
    }
  }
  //设置非超图图层图例是否显示
  if(bool==false){
    olLayerShowHideName.value = dataType + ",移除";
  }else{
    olLayerShowHideName.value = dataType + ",显示";
  }
  if(bool==false){
    getCompleteLayerReturn(dataType);
  }
}

// 不分页获取案例集数据下的新建工程数据列表
function getDataByEngineeringXj(region){
  let province = "";
  let city = "";
  let county = "";
  if(region!=""){
    let arr = region.split("-");
    if(arr.length>0){
      province = arr[0];
      if(arr.length>1){
        city = arr[1];
        if(arr.length>2){
          county = arr[2];
        }
      }
    }
  }
  let params = {
    engineeringType:"1",//新建工程
    province:province,
    city:city,
    county:county,
    engineeringRange:"省级"
  }
  getDataByEngineeringType(params).then(res=>{
    console.log(res.data);
    xjAllDataList.value = res.data?res.data:[];
    getCompleteLayerReturn("新建工程");
  }).catch(() => {
    getCompleteLayerReturn("新建工程");
  });
}

// 不分页获取案例集数据下的加固工程数据列表
function getDataByEngineeringJg(region){
  let province = "";
  let city = "";
  let county = "";
  if(region!=""){
    let arr = region.split("-");
    if(arr.length>0){
      province = arr[0];
      if(arr.length>1){
        city = arr[1];
        if(arr.length>2){
          county = arr[2];
        }
      }
    }
  }
  let params = {
    engineeringType:"0",//加固工程
    province:province,
    city:city,
    county:county,
    engineeringRange:"省级"
  }
  getDataByEngineeringType(params).then(res=>{
    console.log(res.data);
    jgAllDataList.value = res.data?res.data:[];
    getCompleteLayerReturn("加固工程");
  }).catch(() => {
    getCompleteLayerReturn("加固工程");
  });
}

//按省市县进行查询定位
function searchAreas(province,city,county) {
  let key = "";
  let qcType = "";
  if(province) {
    if (city) {
      if (county) {
        key = county;
        qcType = "区县";
      }else{
        key = city;
        if(city==province){//直辖市：北京市、天津市、上海市、重庆市
          qcType = "省";
        }else{
          qcType = "市";
        }
      }
    }else{
      key = province;
      qcType = "省";
    }
  }else{
    key = "中国";
    qcType = "全国";
  }
  console.log("开始天地图搜索功能");
  //天地图搜索功能
  //let administrative1 = 'http://api.tianditu.gov.cn/administrative?postStr={"searchWord":"';
  //let administrative2 = '","searchType":"1","needSubInfo":"false","needAll":"false","needPolygon":"true","needPre":"true"}&tk=d21000f516e20e56b2a2b50596ecc1ee';
  let administrative1 = 'http://api.tianditu.gov.cn/v2/search?postStr={"keyWord":"';
  let administrative2 = '","queryType":12,"start":0,"count":10,"specify":"156110108"}&type=query&tk=0bfd57475542d76f12578a701d2a70ab';
  let url = administrative1 + key + administrative2;
  let httpRequest = new XMLHttpRequest();
  httpRequest.open('get', url, false); //第二步：打开连接
  httpRequest.send(null);
  if (httpRequest.status === 200) {
    let result = JSON.parse(httpRequest.responseText);
    //if (result.returncode == "100") {
    if (result.status.infocode == "1000"&&result.count>0) {
      let lonlat=result.area.lonlat;

      let value = lonlat.split(',');
      if (value.length === 2) {
        let lng = parseFloat(value[0]);
        if (isNaN(lng)) {
          return null;
        }
        let lat = parseFloat(value[1]);
        if (isNaN(lat)) {
          return null;
        }

        let LonLat = [lng, lat];
        //地图缩放级别
        let zoom = result.area.level;
        setMapCenterZoom(LonLat,zoom);
      }

      /*if (result.data && result.data.length > 0) {
        console.log("完成天地图搜索功能");
        console.log(result.data)
        if(result.data.length>1 && (qcType=='市' || qcType=='区县')){//有多个同名市、区县
          if(qcType=="市"){
            for(let i=0;i<result.data.length;i++){
              if(result.data[i].parents.province.name==province){
                let lng = result.data[i].lnt;
                let lat = result.data[i].lat;
                let zoom = result.data[i].level;
                let lonlat = [lng, lat];
                //设置地图定位显示
                setMapCenterZoom(lonlat,zoom);
                break;
              }
            }
          }else if(qcType=="区县"){
            for(let i=0;i<result.data.length;i++){
              if(result.data[i].parents.province.name==province && result.data[i].parents.city.name==city){
                let lng = result.data[i].lnt;
                let lat = result.data[i].lat;
                let zoom = result.data[i].level;
                let lonlat = [lng, lat];
                //设置地图定位显示
                setMapCenterZoom(lonlat,zoom);
                break;
              }
            }
          }
        }else{
          let lng = result.data[0].lnt;
          let lat = result.data[0].lat;
          let zoom = result.data[0].level;
          let lonlat = [lng, lat];
          //设置地图定位显示
          setMapCenterZoom(lonlat,zoom);
        }
      }*/
    }
  }
}

//设置地图定位显示
function setMapCenterZoom(lonlat,zoom){
  if(map.value!=null){
    map.value.getView().setCenter(lonlat);
    map.value.getView().setZoom(zoom);
  }
  loading.value = false;
  emits('returnQueryFlag',true);
}

//获取查询条件--查询省市县地图定位
const getQueryFlag = watch(() => props.queryFlag, value => {// watch函数监听props.queryFlag
  console.log("查询省市县地图定位");
  console.log(value);
  if(value){
    loading.value = true;
    if(props.queryParams.province!="全国级"){
      let province = props.queryParams.province;
      let city = props.queryParams.city;
      let county = props.queryParams.county;
      //按省市县进行查询定位
      searchAreas(province,city,county);
    }else{
      //按省市县进行查询定位
      searchAreas(null,null,null);
    }
  }

},{immediate:true});

//获取查询条件--抗震加固工程分布图（新建）
const getFormSqlFilter1 = watch(() => props.formSqlFilter1, value => {// watch函数监听props.formSqlFilter1
  console.log("获取查询参数--抗震加固工程分布图（新建）");
  console.log(value);
  let dataType = value.dataType;
  let region = value.region;
  let show = value.show;
  //根据类型显示抗震加固工程数据图层
  showKzjgLayerByDataType(dataType,region,show);
},{immediate:true});

//获取查询条件--抗震加固工程分布图（加固）
const getFormSqlFilter2 = watch(() => props.formSqlFilter2, value => {// watch函数监听props.formSqlFilter2
  console.log("获取查询参数--抗震加固工程分布图（加固）");
  console.log(value);
  let dataType = value.dataType;
  let region = value.region;
  let show = value.show;
  //根据类型显示抗震加固工程数据图层
  showKzjgLayerByDataType(dataType,region,show);
},{immediate:true});

//获取查询参数--全国地震灾害风险区划图（抗震能力）
const getFormSqlFilter3 = watch(() => props.formSqlFilter3, value => {// watch函数监听props.formSqlFilter3
  if(value.assessType){
    console.log("获取查询参数3--全国地震灾害风险区划图（抗震能力）");
    console.log(value);
    let dataType = value.dataType;
    // let level2DataType = value.level2DataType;
    // //根据类型移除超图图层
    // removeLayerVersionNew(level2DataType);
    let level3DataType = value.level3DataType;
    //根据类型移除超图图层
    removeLayerVersionNew(level3DataType);
    if(value.show){
      setTimeout(function(){
        //根据类型显示超图图层
        // showLayerByDataTypeNew(dataType,value);
        //设置图层数据版本
        setLayerVersionNew(value,dataType,null,null);
      },1000);
    }
  }
},{immediate:true});

//获取查询参数--全国地震灾害风险区划图（人员伤亡）
const getFormSqlFilter4 = watch(() => props.formSqlFilter4, value => {// watch函数监听props.formSqlFilter4
  if(value.assessType){
    console.log("获取查询参数4--全国地震灾害风险区划图（人员伤亡）");
    console.log(value);
    let dataType = value.dataType;
    // let level2DataType = value.level2DataType;
    // //根据类型移除超图图层
    // removeLayerVersionNew(level2DataType);
    let level3DataType = value.level3DataType;
    //根据类型移除超图图层
    removeLayerVersionNew(level3DataType);
    if(value.show){
      setTimeout(function(){
        //根据类型显示超图图层
        // showLayerByDataTypeNew(dataType,value);
        //设置图层数据版本
        setLayerVersionNew(value,dataType,null,null);
      },1000);
    }
  }
},{immediate:true});

//获取查询参数--全国地震灾害风险区划图（经济损失）
const getFormSqlFilter5 = watch(() => props.formSqlFilter5, value => {// watch函数监听props.formSqlFilter5
  if(value.assessType){
    console.log("获取查询参数5--全国地震灾害风险区划图（经济损失）");
    console.log(value);
    let dataType = value.dataType;
    // let level2DataType = value.level2DataType;
    // //根据类型移除超图图层
    // removeLayerVersionNew(level2DataType);
    let level3DataType = value.level3DataType;
    //根据类型移除超图图层
    removeLayerVersionNew(level3DataType);
    if(value.show){
      setTimeout(function(){
        //根据类型显示超图图层
        // showLayerByDataTypeNew(dataType,value);
        //设置图层数据版本
        setLayerVersionNew(value,dataType,null,null);
      },1000);
    }
  }
},{immediate:true});

//获取查询条件--房屋加固优先级区划图
const getFormSqlFilter6 = watch(() => props.formSqlFilter6, value => {// watch函数监听props.formSqlFilter6
  console.log("获取查询参数--房屋加固优先级区划图");
  console.log(value);
  let dataType = value.level3DataType;
  let region = value.region;
  let show = value.show;
  //根据类型显示超图图层
  showLayerByDataType(dataType,region,show);
},{immediate:true});

//获取查询条件--重点隐患分布图（房屋住宅）
const getFormSqlFilter7 = watch(() => props.formSqlFilter7, value => {// watch函数监听props.formSqlFilter7
  console.log("获取查询参数--重点隐患分布图（房屋住宅）");
  console.log(value);
  let dataType = value.level3DataType;
  let region = value.region;
  let show = value.show;
  //根据类型显示超图图层
  showLayerByDataType(dataType,region,show);
},{immediate:true});

//获取查询条件--重点隐患分布图（市政桥梁）
const getFormSqlFilter8 = watch(() => props.formSqlFilter8, value => {// watch函数监听props.formSqlFilter8
  console.log("获取查询参数--重点隐患分布图（市政桥梁）");
  console.log(value);
  let dataType = value.level3DataType;
  let region = value.region;
  let show = value.show;
  //根据类型显示超图图层
  showLayerByDataType(dataType,region,show);
},{immediate:true});

//获取查询条件--活断层避让分布图（100米）
const getFormSqlFilter9 = watch(() => props.formSqlFilter9, value => {// watch函数监听props.formSqlFilter9
  console.log("获取查询参数--活断层避让分布图（100米）");
  console.log(value);
  let dataType = value.level3DataType;
  let region = value.region;
  let show = value.show;
  //根据类型显示超图图层
  showLayerByDataType(dataType,region,show);
},{immediate:true});

//获取查询条件--活断层避让分布图（200米）
const getFormSqlFilter10 = watch(() => props.formSqlFilter10, value => {// watch函数监听props.formSqlFilter10
  console.log("获取查询参数--活断层避让分布图（200米）");
  console.log(value);
  let dataType = value.level3DataType;
  let region = value.region;
  let show = value.show;
  //根据类型显示超图图层
  showLayerByDataType(dataType,region,show);
},{immediate:true});

onMounted(() => {
  completeRefreshData.value = true;
})
</script>

<style scoped lang="scss">
.mapDiv {
  width: 100%;
  /*height: 100%;*/
  position:absolute;
}

/*设置选择数据面板*/
.new-settingDiv {
  position:absolute;top:18px;left:110px;width:400px;padding:20px;padding-top: 10px;
  background:rgba(0,27,67,0.7);border-radius:4px;color:white;
}
.new-settingDiv-div1{
  padding-bottom: 10px;
  border-bottom: 1px dashed white;
}
.new-settingDiv .new-p{
  margin-bottom: 10px;
  font-size:14px;
}
.new-settingDiv-div3{
  text-align: center;
}
:deep(.new-settingDiv .el-radio){
  color:white;
}
:deep(.new-settingDiv .el-checkbox){
  color:white;
}
:deep(.new-settingDiv .new-p .el-button){
  position:absolute;right:20px;
}
:deep(.new-settingDiv .el-select){
  width:208px;
}
.new-settingDiv-span {
  float: right;
  line-height: 32px;
  cursor:pointer;
}
.new-settingDiv-span:hover {
  cursor:pointer;
}

/*带三角弹窗*/
.new-popover {
  position: absolute;
  top:0px;
  left:0px;
  padding:10px;
  background: rgba(0,27,67,0.8);
  color:white;
  z-index:100;
}
.new-triangle {
  position: absolute;
  top: 20px;
  left: -19px;
  overflow: hidden;
  width: 0;
  height: 0;
  border-width: 10px;
  border-style: dashed solid dashed dashed;
  border-color:transparent rgba(0,27,67,0.8) transparent transparent;
}

.new-pattenAnalysisDiv {
  position: absolute;top:246px;left:105px;font-size: 14px;
}

.new-pattenAnalysisDiv-button {
  float: left;
  width: 80px;
  text-align: center;
  padding: 5px;
  cursor:pointer;
}
/*规律分析按钮div*/
.showPattenAnalysisDiv{

}
.showPattenAnalysisDiv img {
  width:25px;
  border:1px dashed white;
}
.showPattenAnalysisDiv-div1 {
  display: inline-block;width:160px;border-bottom: 1px dashed white;padding-bottom: 10px;
}

.new-div-selected {
  background: rgba(16,124,229,0.5);
  border: 1px solid #707070;
}

.areaDialog {
  text-align: center;
  .close {
    text-align: right;
    .el-icon {
      color: #606266;
      padding: 20px 0;
      margin-right: 10px;
      right: 0px;
      font-size: 22px;
    }
  }
  width: 320px;
  position: absolute;
  top: 246px;
  left: 288px;
  background: rgba($color: #fff, $alpha: 0.9);
}

.resultShowButton {
  position:absolute;
  top:20px;
  right:20px;
  width:50px;
  height:50px;
}

</style>